package com.itheima.Regexdemo;

/**
 * @author zhangbaiyan
 * @date 2024-08-19 15:54
 * @description:
 * @version:
 */
public class test {
    public static void main(String[] args) {

        //邮箱号码
        //3232323@qq.com zhangsan@itcast.cn dkei0009@163.com dlei0009@pci.com.cn
        //思路
        //在书写邮箱号码正则的时候需要把正确的数据分为三部分
        //第一部分:@的左边 \\w+
        //第二部分:@ 只能出现一次
        //第三部分:
        //      3.1 .的左边[\\w&&[^_]]{2,6}
        //          任意的字母加数字,总共出现2-6次(此时不能出现下划线)
        //      3.2 . \\.
        //      3.3 大写字母,小写字母都可以,只能出现2-3次[a-zA-Z]{2,3}
        //      3我们可以把3.2和2.3看成一组,这一组可以出现1次或者两次
        String regex = "\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}";
        System.out.println("3232323@qq.com".matches(regex));
        System.out.println("zhangsan@itcast.cn".matches(regex));
        System.out.println("dkei0009@163.com".matches(regex));
        System.out.println("dlei0009@pci.com.cn".matches(regex));


        String regex2 = "[GCDZTSPKXLY1-9]\\d{1,4}";

        //身份证号码的简单效验
        //18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x
        String regex3 = "[1-9]\\d{16}(\\d|X|x)";
        String regex4 = "[1-9]\\d{16}[\\dXx]";
        String regex8 = "[1-9]\\d{16}(\\d|(?i)x)";

        //忽略大小写的书写方式
        //在匹配的时候忽略abc的大小写
        String regex5 = "(?i)abc";
        //忽略bc
        String regex6 = "a(?i)bc";
        //只忽略b
        String regex7 = "a((?i)b)c";
        System.out.println("---------------");
        System.out.println("ABC".matches(regex5));
        System.out.println("---------------");
        String regexIdcard = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|10|11|12)(0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]";
        System.out.println("35012119991115155x".matches(regexIdcard));
    }
}
